import { get, add, updateById, remove } from "../../utils/db"
Page({
  data: {
    list: [],    //分类列表
    addTag: false,   //true 显示添加输入框；false 隐藏
    updateTag: false,  //true 显示修改输入框；false 隐藏
    name: "",          //菜谱分类名称
    id: "",          //点击修改的item的_id

  },
  async onLoad() {
    let result = await get({ collection: "type" }).catch(err => {
      console.log(err)
    })
    this.setData({
      list: result.data
    })
  },
  //显示添加输入框
  showAdd() {
    this.setData({
      addTag: true
    })
  },
  //执行添加操作
  async doAdd() {
    //添加到数据库
    let result = await add({ collection: "type", data: { name: this.data.name } }).catch(err => {
      console.error(err)
    })

    //读取数据库
    result = await get({ collection: "type" }).catch(err => {
      console.error(err)
    })
    // 渲染到页面
    this.setData({
      list: result.data,
      addTag: false
    })

  },
  //显示修改框
  showUpdate(e) {
    // console.log(e)
    let index = e.currentTarget.dataset.index;      //数据的索引
    let id = e.currentTarget.id;                  //数据的_id

    let name = this.data.list[index].name
    this.setData({
      updateTag: true,
      name,
      id
    })
  },
  //执行修改
  async doUpdate() {
    //修改数据库中的内容
    let result = await updateById({ collection: "type", id: this.data.id, field: "name", value: this.data.name })
      .catch(err => {
        console.error(err)
      })
    //修改页面数据：读取type集合中的数据
    result = await get({ collection: "type" }).catch(err => console.error(err))
    //把数据渲染到页面，隐藏修改框
    this.setData({
      updateTag: false,
      list: result.data
    })
  },
  //删除菜谱分类
  async del(e) {
    let id = e.currentTarget.id;    //菜谱分类的id

    //弹窗确认
    wx.showModal({
      title: "温馨提示",
      content: "您确定要删除吗？",
      success: async res => {
        //用户确定删除
        if (res.confirm) {
          //删除数据库记录
          let result = await remove({ collection: "type", where: { _id: id } }).catch(err => {
            console.error(err)
          })

          //修改页面数据
          result =await get({collection:"type"}).catch(err=>console.error(err))
          this.setData({
            list:result.data
          })

        }
      }
    })
  }
})